package com.mes.service.hy;

import java.util.List;
import com.mes.entity.cb.Materiel;
import com.mes.entity.hy.Maters;
import com.mes.entity.jy.DaysheduDetail;
import com.mes.entity.lc.MaterialStock;
import com.mes.entity.lz.BOM;
import com.mes.entity.zc.MaterNum;

/**
 * 
 * @ClassName:IMaterService
 * @Description: 领料service接口类
 * @Author hy
 * @Date 2018-5-30上午10:52:22
 * @version 1.0
 */
public interface IMaterService {
	
	/**
	 * 分页查询
	 * @param maters 领料类
	 * @return List<Maters>
	 */
	List<Maters> select(Maters maters);

	/**
	 * 查询所有
	 * @return List<Maters>
	 */
	List<Maters> selectAll();

	/**
	 * 条件查询
	 * @param maters 领料类
	 * @return List<Maters>
	 */
	List<Maters> selectByTime(Maters maters);

	/**
	 * 条件查询总数
	 * @param maters 领料类
	 * @return int型条数
	 */
	int selectCount(Maters maters);

	/**
	 * 查询总数
	 * @return int型总数
	 */
	int selectCountMT();

	/**
	 * 添加
	 * @param maters 领料类
	 * @return int型返回值
	 */
	int insert(Maters maters);

	/**
	 * 查询最后一条领料单的单号
	 * @return String类型领料单号
	 */
	String selectOdd();

	/**
	 * 删除
	 * @param pickOdd 领料单号
	 * @return int型返回值
	 */
	int delete(String pickOdd);

	/**
	 * 查询排产单
	 * @param daysheduDetail 排产单详情类
	 * @return List<DaysheduDetail>
	 */
	List<DaysheduDetail> selectDay(DaysheduDetail daysheduDetail);

	/**
	 * 查询排产单总数
	 * @param daysheduDetail 排产单详情类
	 * @return int型总数
	 */
	int selectDayCount(DaysheduDetail daysheduDetail);

	/**
	 * 根据排产单和品编修改该条排产单详情的remark9字段，0为未生产领料单，1为已生成领料单
	 * @param daysheduDetail 排产单详情类
	 */
	void setRe9(DaysheduDetail daysheduDetail);

	/**
	 * 通过领料单号在bom表中查询领料详情
	 * @param bom bom类
	 * @return List<BOM>
	 */
	List<BOM> selectDetail(BOM bom);

	/**
	 * 查询详情总数
	 * @param bom类
	 * @return int型总数
	 */
	int selectDetailCount(BOM bom);

	/**
	 * 根据领料单号查询
	 * @param pickOdd 领料单号
	 * @return Maters 领料类
	 */
	Maters selestByPickOdd(String pickOdd);

	/**
	 * 根据物料名称查询物料id
	 * @param name 物料名称
	 * @return 物料id
	 */
	Long selMid(String name);

	/**
	 * 根据物料id去lc的MaterialStock表中查询条形码和批次号
	 * @param id 物料id
	 * @return MaterialStock物料库存类
	 */
	MaterialStock sel(Long id);

	/**
	 * 根据产品查物料
	 * @param productid 产品id
	 * @return List<MaterNum> 物料集合
	 */
	List<MaterNum> selMa(String productid);

	/**
	 * 查询详情
	 * @param lingliaoOrder 领料单号
	 * @return List<BOM> 物料详情
	 */
	List<BOM> queryBOMInfo(String lingliaoOrder);

	/**
	 * 查询线边库
	 * @param mID 物料id
	 * @return String类型数量
	 */
	String queryJYnowma(String mID);

	/**
	 * 根据物料名称查询物料详情
	 * @param mNum2 物料名称
	 * @return Materiel 物料类
	 */
	Materiel queryMaterial(String mNum2);

	/**
	 * 新增bom关系
	 * @param bom bom类
	 */
	void insertBOM(BOM bom);

	/**
	 * 删除bom
	 * @param lingliaoOrder 领料单号
	 */
	void delBom(String lingliaoOrder);

	/**
	 * 删除领料单时修改排产单
	 * @param daysheduDetail 排产单详情类
	 */
	void update(DaysheduDetail daysheduDetail);
	
	/**
	 * 修改
	 * @param maters 领料类
	 * @return int型返回值
	 */
	int updMa(Maters maters);
	
	/**
	 * 根据物料id在bom计算表中查询该物料是否已经存在
	 * @param remark05 批次号
	 * @param remark02 领料单号
	 * @return bom类
	 */
	BOM selByID(String remark05,String remark02);

	/**
	 * 修改bom计算表
	 * @param bom bom类
	 */
	void updateBom(BOM bom);
	
	/**
	 * 查询未领料的领料单
	 * @return List<Maters>
	 */
	List<Maters> selMaters();
}
